package com.yihusitian.leecode.algorithm.easy;

import java.util.HashSet;
import java.util.Objects;
import java.util.Set;

public class RemoveDuplicatesFromSortedArray {

    /**
     * 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
     *
     * 不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
     *
     *
     *
     * @param nums 为有序数组
     * @return
     */
    public int removeDuplicates(int[] nums) {
        if (Objects.isNull(nums) || nums.length == 0) {
            return 0;
        }

        int pos = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == nums[pos]) {
                continue;
            }
            nums[pos + 1] = nums[i];
            pos++;
        }
        return pos + 1;
    }

    public static void main(String[] args) {

        int[] nums = new int[]{1,2,3,4,5};
        int len = new RemoveDuplicatesFromSortedArray().removeDuplicates(nums);

        // 在函数里修改输入数组对于调用者是可见的。
        // 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
        for (int i = 0; i < len; i++) {
            System.out.println(nums[i]);
        }


    }


}
